\documentclass[a4paper,12pt]{report}
\usepackage[T1]{fontenc}				% codifica dei font
\usepackage[utf8]{inputenc}			% codifica di input
\usepackage[italian]{babel}			% trattare le lingue
\usepackage{indentfirst}				% indentazione della prima riga del paragrafo
\usepackage{enumitem}						% personalizzazione degli elenchi
\usepackage{microtype}					% migliora il riempimento delle righe
\usepackage[colorlinks]{hyperref}	% colora i link
\usepackage{booktabs}
\usepackage{hyperref}
\usepackage{tabularx}
%\usepackage{comment}
\usepackage{graphicx}
%\usepackage{caption}
%\usepackage{frontespizio}

\author{Simone Cainero}
\title{Specifica dei requisiti}

\graphicspath{{immagini/}}

% definisco l'ambiente "tabella"
\newenvironment{tabellaX}[2]%
	{\begin{table}{#1}\footnotesize%
		\begin{center}%
			\begin{tabularx}{\textwidth}{#2}}%
			{\end{tabularx}%
		\end{center}%
	\end{table}}

\newenvironment{tabella}[1]%
	{\begin{table}{b}\footnotesize%
		\begin{center}%
			\begin{tabularx}{\textwidth}{#1}}%
			{\end{tabularx}%
		\end{center}%
	\end{table}}


\begin{document}
	\begin{titlepage}
		%\begin{figure}%[htbp]
		%	\centering
		%	\includegraphics[width=0.5\textwidth]{crystal.jpg}
		%\end{figure}

		\begin{center}
			\vspace{1cm}
			\Huge{Crystal Software}
			\vspace{2cm}

			{\fontsize{40}{50}\selectfont Specifica dei requisiti}
		\end{center}

		\begin{table}[b]\begin{center}\begin{tabularx}{\textwidth}{rlXl}
			\toprule
			\textbf{Rev.}	& \textbf{Data}	& \textbf{Descrizione}		& \textbf{Autore} \\
			\midrule
			1.1				& 22/12/2012		& Aggiunta modello dei dati	& Simone Cainero \\
			\midrule
			1.0				& 17/12/2012		& Creazione del documento	& Simone Cainero \\
			\bottomrule
		\end{tabularx}\end{center}\end{table}
	\end{titlepage}

	\tableofcontents

	\chapter{Scopo e audience}
	Questo documento ha lo scopo di specificare i requisiti analizzati durante l'analisi dei requisiti, definendoli in modo puntuale e in linguaggio tecnico, per utilizzarli come base per la progettazione del sistema. I destinatari di questo documento sono i progettisti e gli sviluppatori del sistema.

	\chapter{Glossario}
	Di seguito alcuni termini utilizzati nel documento.
	\begin{itemize}
		\item \emph{Requisito}: bisogno del committente e/o dell'utente del sistema.
		\item \emph{Requisito funzionale}: requisito che dipende direttamente dalle funzionalità che il committente vuole avere nel sistema.
		\item \emph{Requisito non funzionale}: requisito che non dipende direttamente dalle funzionalità volute dal committente, ma da fattori esterni, come l'ambiente in cui verrà utilizzato il sistema o le specifiche di qualità.
	\end{itemize}

	\chapter{Specifica dei requisiti}
		Di seguito verranno specificati ad un livello tecnico i requisiti espressi nel documento di analisi dei requisiti. Vengono inoltre aggiunti dei requisiti con lo scopo rendere completo l'insieme delle funzionalità svolte dal software. Vengono evidenziati in grassetto i termini tecnici del dominio dell'applicazione.

		\section{Requisiti funzionali}

			\subsection{Gestione delle anagrafiche}
			\begin{par}Il sistema permette all'utente di gestire un archivio di \textbf{dati anagrafici} di \textbf{persone} (o \textbf{nominativi}, di seguito \textbf{anagrafiche}). Tali dati sono:
			\begin{itemize}
				\item \textbf{nome}
				\item \textbf{cognome}
				\item \textbf{data di nascita}
				\item \textbf{luogo di nascita} (città di nascita)
				\item \textbf{stato civile} (nubile/celibe, sposato)
				\item \textbf{residenza} (via, numero civico, CAP, città, nazione)
				\item \textbf{domicilio} (via, numero civico, CAP, città, nazione)
			\end{itemize}\end{par}

			\begin{par}Le anagrafiche possiedono uno \textbf{stato}, che può valere VALIDO o NON VALIDO. Dal punto di vista del dominio, lo stato VALIDO significa che l'anagrafica può essere utilizzata per gli scopi dell'utente, lo stato NON VALIDO significa che l'anagrafica rimarrà in archivio come dato storico, senza però poter essere utilizzata per gli scopi stessi.\newline\end{par}

			\begin{par}La gestione comprende le seguenti operazioni:
			\begin{itemize}
				\item \textbf{inserimento}: aggiunta all'archivio dei dati relativi ad un'anagrafica
				\item \textbf{visualizzazione}: visualizzazione a schermo dei dati relativi ad un'anagrafica
				\item \textbf{esportazione}: esportazione dei dati relativi ad un'anagrafica (ad esempio su file PDF o su carta)
				\item \textbf{modifica}: modifica di uno o più dati relativi ad un'anagrafica
				\item \textbf{cambiamento di stato}: passaggio di un'anagrafica dallo stato VALIDO allo stato NON VALIDO o viceversa (in particolare mediante il termine \textbf{annullamento} si intende il primo dei due passaggi).
			\end{itemize}\end{par}

			\begin{par}Il software fornisce funzioni per l'accesso alle anagrafiche. In particolare consente la visualizzazione dell'elenco delle anagrafiche contenute nell'archivio e la ricerca di anagrafiche mediante schermate di filtro basate sui dati delle anagrafiche stesse.\end{par}

			\subsection{Gestione dei certificati}
			\begin{par}Il sistema permette all'utente di gestire un insieme di \textbf{certificati} relativi alle anagrafiche. I certificati sono fisicamente formati da file PDF e possono essere delle seguenti \textbf{tipologie}:
			\begin{itemize}
				\item \textbf{nascita}
				\item \textbf{residenza}
				\item \textbf{domicilio}
			\end{itemize}\end{par}

			\begin{par}I certificati possiedono uno \textbf{stato}, che può valere VALIDO o NON VALIDO. Dal punto di vista del dominio, lo stato VALIDO significa che il certificato può essere utilizzato per gli scopi dell'utente, lo stato NON VALIDO significa che il certificato rimarrà in archivio come dato storico, senza però poter essere utilizzato per gli scopi stessi.\newline\end{par}

			\begin{par}La gestione comprende le seguenti operazioni:
			\begin{itemize}
				\item \textbf{emissione} (o \textbf{rilascio}): generazione di un certificato a partire da una determinata anagrafica; il sistema legge i dati dell'anagrafica e, a seconda del tipo di certificato richiesto, crea il file PDF; al momento della generazione viene memorizzata la \textbf{data di emissione} del certificato (data di generazione);
				\item \textbf{visualizzazione}: visualizzazione a schermo del certificato;
				\item \textbf{richiesta}: esportazione di un certificato dal sistema (salvataggio del file o stampa);
				\item \textbf{cambiamento di stato}: passaggio di un certificato dallo stato VALIDO allo stato NON VALIDO o viceversa (in particolare mediante il termine \textbf{annullamento} si intende il primo dei due passaggi).
			\end{itemize}\end{par}

			\begin{par}Ad ogni anagrafica è associato solamente un certificato VALIDO per ogni tipologia. La sostituzione di un certificato VALIDO con un altro della stessa tipologia provoca l'annullamento del primo a favore del secondo (il primo rimarrà comunque associato alla propria anagrafica).\newline\end{par}

			\begin{par}Il sistema fornisce funzioni per l'accesso ai certificati, sia a partire da una certa anagrafica, sia mediante schermate di ricerca. È possibile accedere anche ai certificati con stato NON VALIDO.\newline\end{par}

			\begin{par}I dati delle anagrafiche e dei certificati vengono gestiti tramite un database. Il file PDF dei certificati vengono memorizzati dal sistema in un'apposita locazione del file system non appena vengono generati. L'utente non accede direttamente a questi file, ma può visualizzare i certificati tramite le funzioni di ricerca del sistema. Il database contiene le informazioni per associare ciascun file ad una precisa anagrafica.\end{par}

		\section{Requisiti non funzionali}
		\begin{par}La scadenza della consegna è fissata per il 26/04/2013.\newline\end{par}

		\begin{par}Il software verrà sviluppato per sistemi \emph{Mac OS X} (dalla versione 10.6 in poi). I linguaggio utilizzato sarà il \emph{Java}. Il database utilizzato sarà \emph{MySql}.\end{par}

		\section{Requisiti di dominio}
		\begin{par}Non sono stati specificati requisiti di dominio.\end{par}

		\section{Diagrammi}

			\subsection{Diagramma concettuale}
				\begin{par}La figura~\ref{diagramma_concettuale} mostra un diagramma UML concettuale che rappresenta il dominio del sistema.\end{par}
				\begin{figure}[htbp]
					\caption{Diagramma concettuale del sistema.}
					\label{diagramma_concettuale}
					\centering
					\includegraphics[width=\textwidth]{diagramma_concettuale_2.pdf}
				\end{figure}

			\subsection{Modello dei dati}
				\begin{par}La figura~\ref{modello_dati} mostra un diagramma Entity-Relationship che rappresenta il modello dei dati del sistema.\end{par}
				\begin{figure}[htbp]
					\caption{Modello dei dati del sistema.}
					\label{modello_dati}
					\centering
					\includegraphics[width=\textwidth]{modello_ER.pdf}
				\end{figure}
\end{document}
